﻿/**
 * @file Types.h
 * @brief SSD仿真系统缓冲区相关类型定义。
 */
#ifndef __BufferTypes_h__
#define __BufferTypes_h__

#include "BasicTypes.h"

/**
 * @enum BufferType
 * @brief 缓冲区类型枚举。
 */
enum BufferType
{
    User,     /**< 用户缓冲区 */
    System,   /**< 系统缓冲区 */
    Undefined /**< 未定义类型 */
};

/**
 * @struct BufferHandle
 * @brief 缓冲区句柄结构体。
 */
struct BufferHandle
{
    U32 _; /**< 句柄值 */
};

/**
 * @typedef tBufferHandle
 * @brief 缓冲区句柄类型定义。
 */
using tBufferHandle = PrimitiveTemplate<U32, struct BufferHandle>;

/**
 * @struct Buffer
 * @brief 缓冲区信息结构体。
 */
struct Buffer
{
    tBufferHandle Handle;          /**< 缓冲区句柄 */
    U32 SizeInSector;              /**< 缓冲区大小（扇区数） */
    U32 SizeInByte;                /**< 缓冲区大小（字节数） */
    tSectorOffset SubBufferOffset; /**< 子缓冲区偏移 */
    BufferType Type;               /**< 缓冲区类型 */
};

/**
 * @struct SectorInfo
 * @brief 扇区信息结构体。
 */
struct SectorInfo
{
    U8 SectorSizeInBit;    /**< 扇区大小（bit） */
    bool CompactMode;      /**< 是否压缩模式 */
    U16 CompactSizeInByte; /**< 压缩后字节数 */
};

#endif